package main.java.BLT;

import java.util.ArrayList;

public class EvalResultado {
	
	private static Mazo caidosEnCombate;
	private static Mazo mazoLideres;
	
	
	public static void decideResultado(Integer rJugador, Jugador j1, Jugador j2){
		
		if(rJugador==1){
			resultado1(j1);
		}else if(rJugador==2){							
			resultado2(j1);
		}else if(rJugador==3){
			resultado3(j1);
		}else if(rJugador==4){
			resultado4(j1, j2);			
		}else if(rJugador==5){
			resultado5(j1, j2);			
		}else if(rJugador==7){
			resultado7(j1, j2);							
		}else if(rJugador==8){
			resultado8(j1, j2);
		}
	}
	
	private static void resultado8(Jugador j1, Jugador j2) {
		System.out.println("el jugador: " + j1.getNombre()+ " pierde la batalla y todas sus cartas en juego");
		resultado4(j1, j2);			
		j1.getBajas().getCartas().addAll(j1.getReservaEnJuego().getCartas());
		j1.getReservaEnJuego().getCartas().clear();
	}
	
	private static void resultado7(Jugador j1, Jugador j2) {
		System.out.println("el jugador: " + j1.getNombre()+ " pierde la batalla");
		resultado4(j1, j2);
	}
	
	private static void resultado5(Jugador j1, Jugador j2) {
		System.out.println("El jugador " + j1.getNombre() + " pierde la batalla");
		j2.setBatallasGanadas(j2.getBatallasGanadas()+1);
	}
	
	private static void resultado4(Jugador j1, Jugador j2) {
		System.out.println(j2.getNombre()+ " obliga a descartar el lider de "+ j1.getNombre());
		caidosEnCombate.getCartas().add(j1.getLider());
		j1.setLider((Lider)mazoLideres.sacaCartaPrimera());

	}
	
	private static void resultado3(Jugador j1) {
		System.out.println("El jugador: " + j1.getNombre() + " pierde 3 cartas");
		System.out.println("¿Que cartas de ejercito desea retirar?:" );	
		ArrayList<Carta> cEjercito=	Jugador.seleccionaMazo(j1.getReservaEnJuego().getCartas(),3);
		j1.getBajas().getCartas().addAll(cEjercito);

	}
	
	private static void resultado2(Jugador j1) {
		System.out.println("El jugador: " + j1.getNombre() + " pierde 2 cartas");
		System.out.println("¿Que cartas de ejercito desea retirar?:" );	
		ArrayList<Carta> cEjercito=	Jugador.seleccionaMazo(j1.getReservaEnJuego().getCartas(),2);			
		j1.getBajas().getCartas().addAll(cEjercito);
	}
	
	private static void resultado1(Jugador j1) {
		System.out.println("El jugador: " + j1.getNombre() + " pierde 1 cartas");
		System.out.println("¿Que carta de ejercito desea retirar?:" );

		Ejercito cEjercito=	(Ejercito)Jugador.seleccionaCarta(j1.getReservaEnJuego().getCartas());
		j1.getBajas().getCartas().add(cEjercito);
		j1.getReservaEnJuego().getCartas().remove(cEjercito);

	}
	
	
	/// metodo que se utiliza en el caso de que el jugador con lider mas bajo tenga que eliminar alguna de sus cartas
	// entonces el jugador con el lider mas alto decidirá la primera carta que debe eliminar
	public static void decideResultadoLiderMasAlto(Integer rJugador, Jugador j1, Jugador j2){
		
		if(rJugador==0){
			
		}else if(rJugador==1){
			resultado1LiderMasAlto(j1, j2);

		}else if(rJugador==2){
			
			resultado2LiderMasAlto(j1, j2);
									
		}else if(rJugador==3){
			
			resultado3LiderMasAlto(j1, j2);
			
		}else if(rJugador==4){
			
			resultado4(j1, j2);			
			
		}else if(rJugador==5){
			
			resultado5(j1, j2);
			
		}else if(rJugador==8){
			
			resultado8(j1, j2);
			
		}else if(rJugador==7){
			resultado7(j1, j2);			
		}
	}
	
	private static void resultado3LiderMasAlto(Jugador j1, Jugador j2) {
		System.out.println("El jugador: " + j1.getNombre() + " Pierde 3 cartas");
		System.out.println("El jugador: " + j2.getNombre()+ " al tener el lider mas alto, decide la primera carta que desea eliminar de su oponente ¿Que carta de ejercito desea retirar?:" );

		Ejercito cEjercito=	(Ejercito)Jugador.seleccionaCarta(j1.getReservaEnJuego().getCartas());
		j1.getBajas().getCartas().add(cEjercito);
		j1.getReservaEnJuego().getCartas().remove(cEjercito);

		System.out.println(j1.getNombre()+ " ¿Que otras 2 cartas de ejercito desea retirar?:" );
	
		ArrayList<Carta> cEjercito2= Jugador.seleccionaMazo(j1.getReservaEnJuego().getCartas(),2);			
		j1.getBajas().getCartas().addAll(cEjercito2);
	}
	
	private static void resultado2LiderMasAlto(Jugador j1, Jugador j2) {
		System.out.println("El jugador: " + j1.getNombre() + " Pierde 2 cartas");
		System.out.println("El jugador: " + j2.getNombre()+ " al tener el lider mas alto, decide la primera carta que desea eliminar de su oponente ¿Que carta de ejercito desea retirar?:" );

		Ejercito cEjercito=	(Ejercito)Jugador.seleccionaCarta(j1.getReservaEnJuego().getCartas());
		j1.getBajas().getCartas().add(cEjercito);
		j1.getReservaEnJuego().getCartas().remove(cEjercito);
		
		System.out.println("¿Que otra carta de ejercito desea retirar?:" );

		Ejercito cEjercito2=(Ejercito)Jugador.seleccionaCarta(j1.getReservaEnJuego().getCartas());
		j1.getBajas().getCartas().add(cEjercito2);
		j1.getReservaEnJuego().getCartas().remove(cEjercito2);
	}
	
	private static void resultado1LiderMasAlto(Jugador j1, Jugador j2) {
		System.out.println("El jugador: " + j1.getNombre() + " Pierde 1 carta");
		System.out.println("El jugador: " + j2.getNombre()+ " al tener el lider mas alto, decide que carta desea eliminar de su oponente ¿Que carta de ejercito desea retirar?:" );
	
		Ejercito cEjercito=	(Ejercito)Jugador.seleccionaCarta(j1.getReservaEnJuego().getCartas());
		j1.getBajas().getCartas().add(cEjercito);
		j1.getReservaEnJuego().getCartas().remove(cEjercito);
	}
}
